#include <iostream>
#include <string>
using namespace std;
const int N = 100010;

// e[i]表示节点i的值
// l[i]表示节点i的左next指针是多少
// r[i]表示节点i的右next指针是多少
// idx存储当前已经用到了哪个点----也用来表示插入点计次，但从2开始计次
int e[N], l[N], r[N], idx;
int ct[N]; // 自建，用来计次

// 初始化链表
void init()
{
    l[1] = 0, r[0] = 1; // 1的左边是0，0的右边是1
    idx = 2;            // 新点的下标从2开始
}

// 在点k的右边插入x
void add(int k, int x)
{
    e[idx] = x;       // 新点的值为x
    r[idx] = r[k];    // 新点的右边为k原来的右边
    l[idx] = l[r[k]]; // 新点的左边为原来k右点的左边（实际上就是k）
    l[r[k]] = idx;    // 原来k右点的左边为新点
    r[k] = idx++;     // 原来k右边的点为新点idx，idx++
}

// 删除第k个结点
void remove(int k)
{
    l[r[k]] = l[k]; // k右点的左结点变成k的左结点
    r[l[k]] = r[k]; // k左点的右结点变成k的右结点
}
int main()
{
    ios::sync_with_stdio(false);
    int m;
    cin >> m;
    init();

    string s;
    int k, x;
    int cnt = 1;

    while (m--)
    {
        cin >> s;
        if (s == "L")
        {
            cin >> x;
            add(0, x);
            ct[idx - 1] = cnt++;
        }
        else if (s == "R")
        {
            cin >> x;
            add(l[1], x);
            ct[idx - 1] = cnt++;
        }
        else if (s == "D")
        {
            cin >> k;
            remove(k + 1); // k + 1 是因为头节点和尾节点占用了两个，idx从2开始
        }
        else if (s == "IL")
        {
            cin >> k >> x;
            add(l[k + 1], x); // k + 1 是因为头节点和尾节点占用了两个，idx从2开始
            ct[idx - 1] = cnt++;
        }
        else if (s == "IR")
        {
            cin >> k >> x;
            add(k + 1, x); // k + 1 是因为头节点和尾节点占用了两个，idx从2开始
            ct[idx - 1] = cnt++;
        }

        for (int i = r[0]; i != 1; i = r[i])
            cout << e[i] << '(' << ct[i] << ')' << ' ';
        cout << endl;
    }
}